package pe.edu.sistemas.sisdiho.mappers;

import java.util.List;

import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import pe.edu.sistemas.sisdiho.entities.RegistroHorario;
public interface ScheduleLaboMapper {
	
	@Select("SELECT DISTINCT(h.IDHORARIO_CLASE), "
			+ "CONCAT (p.PERSONA_APPATERNO,' ',p.PERSONA_APMATERNO,' , ',p.PERSONA_NOMBRE) as nombreDocente, "
			+ "h.IDHORARIO_CLASE as idClase, "
			+ "c.CURSO_PERIODO_NOMBRE as curso, "
			+ "e.escuela_nombre as escuela, "
			+ "g.GRUPO_NUMERO as grupo, "
			+ "a.NOMBRE as aula, "
			+ "h.DIA as dia, "
			+ "h.HORA_INICIO as hInicio, "
			+ "h.HORA_FIN as hFin, "
			+ "h.HORARIO_CLASE_TIPO as tipo, "
			+ "h.AULA_IDAULA as idAula "
			+ "FROM PERSONA p , DOCENTE d , CURSO_PERIODO c , GRUPO g , AULA a , HORARIO_CLASE h , CURSO_CONJUNTO cc , CURSO_BASE cb , PLAN pl , ESCUELA e "
			+ "WHERE h.HORARIO_CLASE_TIPO='LABORATORIO' "
			+ "AND h.HORARIO_CLASE_PERIODO=#{periodo} "
			+ "and h.GRUPO_IDGRUPO=g.IDGRUPO "
			+ "and h.DOCENTE_IDDOCENTE=d.IDDOCENTE "
			+ "and d.PERSONA_ID_PERSONA=p.ID_PERSONA "
			+ "and h.GRUPO_IDGRUPO=g.IDGRUPO "
			+ "and g.CURSO_IDCURSO=c.IDCURSO_PERIODO "
			+ "and c.CURSO_PERIODO_CURSOC_CODCOMUN=cc.CURSOC_CODCOMUN "
			+ "and cc.CURSOC_IDCURSO_GENERAL=cb.IDCURSO_GENERAL "
			+ "AND cb.PLAN_ID_PLAN=pl.IDPLAN "
			+ "AND pl.ESCUELA_IDESCUELA=e.IDESCUELA "
			+ "AND h.DIA=1 "
			+ "and (h.AULA_IDAULA=a.IDAULA OR h.AULA_IDAULA is NULL) "
			+ "ORDER BY h.AULA_IDAULA DESC")
	public List<RegistroHorario> obtenerHorariosLunesLabo(@Param("periodo") String periodo);
	
	@Select("SELECT DISTINCT(h.IDHORARIO_CLASE), "
			+ "CONCAT (p.PERSONA_APPATERNO,' ',p.PERSONA_APMATERNO,' , ',p.PERSONA_NOMBRE) as nombreDocente, "
			+ "h.IDHORARIO_CLASE as idClase, "
			+ "c.CURSO_PERIODO_NOMBRE as curso, "
			+ "e.escuela_nombre as escuela, "
			+ "g.GRUPO_NUMERO as grupo, "
			+ "a.NOMBRE as aula, "
			+ "h.DIA as dia, "
			+ "h.HORA_INICIO as hInicio, "
			+ "h.HORA_FIN as hFin, "
			+ "h.HORARIO_CLASE_TIPO as tipo, "
			+ "h.AULA_IDAULA as idAula "
			+ "FROM PERSONA p , DOCENTE d , CURSO_PERIODO c , GRUPO g , AULA a , HORARIO_CLASE h , CURSO_CONJUNTO cc , CURSO_BASE cb , PLAN pl , ESCUELA e "
			+ "WHERE h.HORARIO_CLASE_TIPO='LABORATORIO' "
			+ "AND h.HORARIO_CLASE_PERIODO=#{periodo} "
			+ "and h.GRUPO_IDGRUPO=g.IDGRUPO "
			+ "and h.DOCENTE_IDDOCENTE=d.IDDOCENTE "
			+ "and d.PERSONA_ID_PERSONA=p.ID_PERSONA "
			+ "and h.GRUPO_IDGRUPO=g.IDGRUPO "
			+ "and g.CURSO_IDCURSO=c.IDCURSO_PERIODO "
			+ "and c.CURSO_PERIODO_CURSOC_CODCOMUN=cc.CURSOC_CODCOMUN "
			+ "and cc.CURSOC_IDCURSO_GENERAL=cb.IDCURSO_GENERAL "
			+ "AND cb.PLAN_ID_PLAN=pl.IDPLAN "
			+ "AND pl.ESCUELA_IDESCUELA=e.IDESCUELA "
			+ "AND h.DIA=2 "
			+ "and (h.AULA_IDAULA=a.IDAULA OR h.AULA_IDAULA is NULL) "
			+ "ORDER BY h.AULA_IDAULA DESC")
	public List<RegistroHorario> obtenerHorariosMartesLabo(@Param("periodo") String periodo);
	
	@Select("SELECT DISTINCT(h.IDHORARIO_CLASE), "
			+ "CONCAT (p.PERSONA_APPATERNO,' ',p.PERSONA_APMATERNO,' , ',p.PERSONA_NOMBRE) as nombreDocente, "
			+ "h.IDHORARIO_CLASE as idClase, "
			+ "c.CURSO_PERIODO_NOMBRE as curso, "
			+ "e.escuela_nombre as escuela, "
			+ "g.GRUPO_NUMERO as grupo, "
			+ "a.NOMBRE as aula, "
			+ "h.DIA as dia, "
			+ "h.HORA_INICIO as hInicio, "
			+ "h.HORA_FIN as hFin, "
			+ "h.HORARIO_CLASE_TIPO as tipo, "
			+ "h.AULA_IDAULA as idAula "
			+ "FROM PERSONA p , DOCENTE d , CURSO_PERIODO c , GRUPO g , AULA a , HORARIO_CLASE h , CURSO_CONJUNTO cc , CURSO_BASE cb , PLAN pl , ESCUELA e "
			+ "WHERE h.HORARIO_CLASE_TIPO='LABORATORIO' "
			+ "AND h.HORARIO_CLASE_PERIODO=#{periodo} "
			+ "and h.GRUPO_IDGRUPO=g.IDGRUPO "
			+ "and h.DOCENTE_IDDOCENTE=d.IDDOCENTE "
			+ "and d.PERSONA_ID_PERSONA=p.ID_PERSONA "
			+ "and h.GRUPO_IDGRUPO=g.IDGRUPO "
			+ "and g.CURSO_IDCURSO=c.IDCURSO_PERIODO "
			+ "and c.CURSO_PERIODO_CURSOC_CODCOMUN=cc.CURSOC_CODCOMUN "
			+ "and cc.CURSOC_IDCURSO_GENERAL=cb.IDCURSO_GENERAL "
			+ "AND cb.PLAN_ID_PLAN=pl.IDPLAN "
			+ "AND pl.ESCUELA_IDESCUELA=e.IDESCUELA "
			+ "AND h.DIA=3 "
			+ "and (h.AULA_IDAULA=a.IDAULA OR h.AULA_IDAULA is NULL) "
			+ "ORDER BY h.AULA_IDAULA DESC")
	public List<RegistroHorario> obtenerHorariosMiercolesLabo(@Param("periodo") String periodo);
	
	@Select("SELECT DISTINCT(h.IDHORARIO_CLASE), "
			+ "CONCAT (p.PERSONA_APPATERNO,' ',p.PERSONA_APMATERNO,' , ',p.PERSONA_NOMBRE) as nombreDocente, "
			+ "h.IDHORARIO_CLASE as idClase, "
			+ "c.CURSO_PERIODO_NOMBRE as curso, "
			+ "e.escuela_nombre as escuela, "
			+ "g.GRUPO_NUMERO as grupo, "
			+ "a.NOMBRE as aula, "
			+ "h.DIA as dia, "
			+ "h.HORA_INICIO as hInicio, "
			+ "h.HORA_FIN as hFin, "
			+ "h.HORARIO_CLASE_TIPO as tipo, "
			+ "h.AULA_IDAULA as idAula "
			+ "FROM PERSONA p , DOCENTE d , CURSO_PERIODO c , GRUPO g , AULA a , HORARIO_CLASE h , CURSO_CONJUNTO cc , CURSO_BASE cb , PLAN pl , ESCUELA e "
			+ "WHERE h.HORARIO_CLASE_TIPO='LABORATORIO' "
			+ "AND h.HORARIO_CLASE_PERIODO=#{periodo} "
			+ "and h.GRUPO_IDGRUPO=g.IDGRUPO "
			+ "and h.DOCENTE_IDDOCENTE=d.IDDOCENTE "
			+ "and d.PERSONA_ID_PERSONA=p.ID_PERSONA "
			+ "and h.GRUPO_IDGRUPO=g.IDGRUPO "
			+ "and g.CURSO_IDCURSO=c.IDCURSO_PERIODO "
			+ "and c.CURSO_PERIODO_CURSOC_CODCOMUN=cc.CURSOC_CODCOMUN "
			+ "and cc.CURSOC_IDCURSO_GENERAL=cb.IDCURSO_GENERAL "
			+ "AND cb.PLAN_ID_PLAN=pl.IDPLAN "
			+ "AND pl.ESCUELA_IDESCUELA=e.IDESCUELA "
			+ "AND h.DIA=4 "
			+ "and h.AULA_IDAULA=a.IDAULA "
			+ "ORDER BY h.AULA_IDAULA DESC")
	public List<RegistroHorario> obtenerHorariosJuevesLabo(@Param("periodo") String periodo);
	
	@Select("SELECT DISTINCT(h.IDHORARIO_CLASE), "
			+ "CONCAT (p.PERSONA_APPATERNO,' ',p.PERSONA_APMATERNO,' , ',p.PERSONA_NOMBRE) as nombreDocente, "
			+ "h.IDHORARIO_CLASE as idClase, "
			+ "c.CURSO_PERIODO_NOMBRE as curso, "
			+ "e.escuela_nombre as escuela, "
			+ "g.GRUPO_NUMERO as grupo, "
			+ "a.NOMBRE as aula, "
			+ "h.DIA as dia, "
			+ "h.HORA_INICIO as hInicio, "
			+ "h.HORA_FIN as hFin, "
			+ "h.HORARIO_CLASE_TIPO as tipo, "
			+ "h.AULA_IDAULA as idAula "
			+ "FROM PERSONA p , DOCENTE d , CURSO_PERIODO c , GRUPO g , AULA a , HORARIO_CLASE h , CURSO_CONJUNTO cc , CURSO_BASE cb , PLAN pl , ESCUELA e "
			+ "WHERE h.HORARIO_CLASE_TIPO='LABORATORIO' "
			+ "AND h.HORARIO_CLASE_PERIODO=#{periodo} "
			+ "and h.GRUPO_IDGRUPO=g.IDGRUPO "
			+ "and h.DOCENTE_IDDOCENTE=d.IDDOCENTE "
			+ "and d.PERSONA_ID_PERSONA=p.ID_PERSONA "
			+ "and h.GRUPO_IDGRUPO=g.IDGRUPO "
			+ "and g.CURSO_IDCURSO=c.IDCURSO_PERIODO "
			+ "and c.CURSO_PERIODO_CURSOC_CODCOMUN=cc.CURSOC_CODCOMUN "
			+ "and cc.CURSOC_IDCURSO_GENERAL=cb.IDCURSO_GENERAL "
			+ "AND cb.PLAN_ID_PLAN=pl.IDPLAN "
			+ "AND pl.ESCUELA_IDESCUELA=e.IDESCUELA "
			+ "AND h.DIA=5 "
			+ "and (h.AULA_IDAULA=a.IDAULA OR h.AULA_IDAULA is NULL) "
			+ "ORDER BY h.AULA_IDAULA DESC")
	public List<RegistroHorario> obtenerHorariosViernesLabo(@Param("periodo") String periodo);
	
	@Select("SELECT DISTINCT(h.IDHORARIO_CLASE), "
			+ "CONCAT (p.PERSONA_APPATERNO,' ',p.PERSONA_APMATERNO,' , ',p.PERSONA_NOMBRE) as nombreDocente, "
			+ "h.IDHORARIO_CLASE as idClase, "
			+ "c.CURSO_PERIODO_NOMBRE as curso, "
			+ "e.escuela_nombre as escuela, "
			+ "g.GRUPO_NUMERO as grupo, "
			+ "a.NOMBRE as aula, "
			+ "h.DIA as dia, "
			+ "h.HORA_INICIO as hInicio, "
			+ "h.HORA_FIN as hFin, "
			+ "h.HORARIO_CLASE_TIPO as tipo, "
			+ "h.AULA_IDAULA as idAula "
			+ "FROM PERSONA p , DOCENTE d , CURSO_PERIODO c , GRUPO g , AULA a , HORARIO_CLASE h , CURSO_CONJUNTO cc , CURSO_BASE cb , PLAN pl , ESCUELA e "
			+ "WHERE h.HORARIO_CLASE_TIPO='LABORATORIO' "
			+ "AND h.HORARIO_CLASE_PERIODO=#{periodo} "
			+ "and h.GRUPO_IDGRUPO=g.IDGRUPO "
			+ "and h.DOCENTE_IDDOCENTE=d.IDDOCENTE "
			+ "and d.PERSONA_ID_PERSONA=p.ID_PERSONA "
			+ "and h.GRUPO_IDGRUPO=g.IDGRUPO "
			+ "and g.CURSO_IDCURSO=c.IDCURSO_PERIODO "
			+ "and c.CURSO_PERIODO_CURSOC_CODCOMUN=cc.CURSOC_CODCOMUN "
			+ "and cc.CURSOC_IDCURSO_GENERAL=cb.IDCURSO_GENERAL "
			+ "AND cb.PLAN_ID_PLAN=pl.IDPLAN "
			+ "AND pl.ESCUELA_IDESCUELA=e.IDESCUELA "
			+ "AND h.DIA=6 "
			+ "and (h.AULA_IDAULA=a.IDAULA OR h.AULA_IDAULA is NULL) "
			+ "ORDER BY h.AULA_IDAULA DESC")
	public List<RegistroHorario> obtenerHorariosSabadoLabo(@Param("periodo") String periodo);
	
	@Select("SELECT DISTINCT(h.IDHORARIO_CLASE), "
			+ "CONCAT (p.PERSONA_APPATERNO,' ',p.PERSONA_APMATERNO,' , ',p.PERSONA_NOMBRE) as nombreDocente, "
			+ "h.IDHORARIO_CLASE as idClase, "
			+ "c.CURSO_PERIODO_NOMBRE as curso, "
			+ "e.escuela_nombre as escuela, "
			+ "g.GRUPO_NUMERO as grupo, "
			+ "a.NOMBRE as aula, "
			+ "h.DIA as dia, "
			+ "h.HORA_INICIO as hInicio, "
			+ "h.HORA_FIN as hFin, "
			+ "h.HORARIO_CLASE_TIPO as tipo, "
			+ "h.AULA_IDAULA as idAula "
			+ "FROM PERSONA p , DOCENTE d , CURSO_PERIODO c , GRUPO g , AULA a , HORARIO_CLASE h , CURSO_CONJUNTO cc , CURSO_BASE cb , PLAN pl , ESCUELA e "
			+ "WHERE h.HORARIO_CLASE_TIPO='LABORATORIO' "
			+ "AND h.HORARIO_CLASE_PERIODO=#{periodo} "
			+ "and h.GRUPO_IDGRUPO=g.IDGRUPO "
			+ "and h.DOCENTE_IDDOCENTE=d.IDDOCENTE "
			+ "and d.PERSONA_ID_PERSONA=p.ID_PERSONA "
			+ "and h.GRUPO_IDGRUPO=g.IDGRUPO "
			+ "and g.CURSO_IDCURSO=c.IDCURSO_PERIODO "
			+ "and c.CURSO_PERIODO_CURSOC_CODCOMUN=cc.CURSOC_CODCOMUN "
			+ "and cc.CURSOC_IDCURSO_GENERAL=cb.IDCURSO_GENERAL "
			+ "AND cb.PLAN_ID_PLAN=pl.IDPLAN "
			+ "AND pl.ESCUELA_IDESCUELA=e.IDESCUELA "
			+ "and h.AULA_IDAULA=a.IDAULA "
			+ "AND h.DIA=7 "
			+ "ORDER BY h.AULA_IDAULA DESC")
	public List<RegistroHorario> obtenerHorariosDomingoLabo(@Param("periodo") String periodo);

}
